/**
 *                            License
 * THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS  
 * CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). 
 * THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW.  
 * ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR  
 * COPYRIGHT LAW IS PROHIBITED.
 * 
 * BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND  
 * AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE  
 * MAY BE CONSIDERED TO BE A CONTRACT,
 * THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED 
 * HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
 * 
 */
package lineage.ui;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JFrame;

/**
 * 框架(窗口).
 * 
 * @version 2014年2月10日下午2:19:59
 * @author jrwz
 */
public class L1Frame extends JFrame implements WindowListener, MouseListener, MouseMotionListener {
    private static final long serialVersionUID = 1969469662984352229L;
    /** 组件的x坐标. */
    protected int _x;
    /** 组件的y坐标. */
    protected int _y;
    /** 组件的宽度. */
    protected int _width;
    /** 组件的高度. */
    protected int _height;
    /** 设置窗口标题. */
    protected String _title;

    protected L1Frame() {
    }

    /**
     * 初始化.
     * 如要在窗体上添加其他组件,应在此方法之前.
     * 
     * @param flag
     *            - 是否立即显示
     */
    protected void init(boolean flag) {
        setLayout();
        setTitle(_title);
        setBounds(_x, _y, _width, _height);
        set_resizable();
        addListener();
        setDefaultCloseOperation();
        add();
        setVisible(flag);
    }

    /**
     * 在此增加其他组件(默认什么也不加).
     */
    protected void add() {
    }

    /**
     * 设置布局(默认空布局).
     */
    protected void setLayout() {
        setLayout(null); // 空布局(其上的组件可以任意调整位置)
    }

    /**
     * 设置是否可由用户调整大小(默认禁止改变大小).
     */
    protected void set_resizable() {
        setResizable(false); // 禁止改变大小
    }

    /**
     * 增加监听器(默认增加窗口状态监听).
     */
    protected void addListener() {
        addWindowListener(this);
    }

    /**
     * 设置用户点击'关闭按钮'后所发生的事(默认什么也不做).
     */
    protected void setDefaultCloseOperation() {
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // 点击关闭按钮后什么也不做.
    }

    /**
     * 当窗口首次出现时调用.
     */
    @Override
    public void windowOpened(WindowEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 当按下关闭按钮之后调用(默认隐藏窗体).
     */
    @Override
    public void windowClosing(WindowEvent e) {
        setVisible(false); // 隐藏窗体
    }

    /**
     * 当窗口已经关闭之后调用.
     */
    @Override
    public void windowClosed(WindowEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 当窗口从正常变为最小化状态时调用.
     */
    @Override
    public void windowIconified(WindowEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 当窗口被从最小化到正常状态改变时调用.
     */
    @Override
    public void windowDeiconified(WindowEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 当窗口被设置为活动窗口时调用.
     */
    @Override
    public void windowActivated(WindowEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 当窗口不再是活动窗口时调用.
     */
    @Override
    public void windowDeactivated(WindowEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 当鼠标点击时(按下并释放)调用.
     */
    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 当鼠标按下时调用.
     */
    @Override
    public void mousePressed(MouseEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 当鼠标释放时调用.
     */
    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 当鼠标进入时调用.
     */
    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 当鼠标离开时调用.
     */
    @Override
    public void mouseExited(MouseEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 当鼠标按钮在组件上按下并拖动时调用.
     */
    @Override
    public void mouseDragged(MouseEvent e) {
        // TODO 自动生成的方法存根

    }

    /**
     * 将鼠标光标移动到组件上但不按下时调用.
     */
    @Override
    public void mouseMoved(MouseEvent e) {
        // TODO 自动生成的方法存根

    }
}
